package com.example.mapper;

import com.example.entity.DocumentFolder;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface DocumentFolderMapper {

    /**
     * 创建新文件夹
     */
    int insertFolder(DocumentFolder folder);

    /**
     * 根据文件夹ID获取文件夹详情
     */
    DocumentFolder getFolderById(@Param("folderId") Integer folderId);

    /**
     * 根据空间ID获取根目录文件夹列表
     */
    List<DocumentFolder> getRootFoldersBySpaceId(@Param("spaceId") Integer spaceId);

    /**
     * 根据空间ID获取所有文件夹列表
     */
    List<DocumentFolder> getFoldersBySpaceId(@Param("spaceId") Integer spaceId);

    /**
     * 根据父文件夹ID获取子文件夹列表
     */
    List<DocumentFolder> getSubFoldersByParentId(@Param("parentFolderId") Integer parentFolderId);

    /**
     * 更新文件夹信息
     */
    int updateFolder(DocumentFolder folder);

    /**
     * 软删除文件夹
     */
    int deleteFolder(@Param("folderId") Integer folderId);

    /**
     * 检查文件夹名称在同一父目录下是否重复
     */
    int checkFolderNameExists(@Param("folderName") String folderName,
            @Param("spaceId") Integer spaceId,
            @Param("parentFolderId") Integer parentFolderId);

    /**
     * 获取文件夹的完整路径
     */
    List<DocumentFolder> getFolderPath(@Param("folderId") Integer folderId);

    /**
     * 根据空间ID和创建者获取文件夹列表
     */
    List<DocumentFolder> getFoldersBySpaceAndCreator(@Param("spaceId") Integer spaceId,
            @Param("creatorUsername") String creatorUsername);
}